傳統的程式(程序導向,procedural programming)大多是以函式為主:
先定義一堆函式(function),然後依順序呼叫。
當專案變大,資料(data) 跟功能(function)分散各地,容易失控。
物件導向(OOP, Object-Oriented Programming)的核心想法是把資料和操作它的功能「綁在一起」,組合成一個物件(Object)。讓程式更有結構,物件之間互相獨立,維護性高。
類別 (Class) 就像「藍圖」、「模板」、「設計稿」。
定義了「這類東西會有什麼屬性(attributes, 資料)」和「能做什麼事(methods, 方法)」。但類別本身不是實際存在的東西。
物件 (Object) 是根據類別所建立的「實體」。
就像「用設計藍圖蓋出來的房子」。每個物件都有自己的資料,但都遵循同一個類別的規則。
example:學生系統
定義類別(模板)
class Student:
def __init__(self, name, age): # 初始化方法,定義屬性
self.name = name
self.age = age
def introduce(self): # 方法(功能)
return f"Hello, my name is {self.name}, I am {self.age} years old."
建立物件(實體)
s1 = Student("Chloe", 20)
s2 = Student("Evelyn", 22)
print(s1.introduce()) # Hello, my name is Chloe, I am 20 years old.
print(s2.introduce()) # Hello, my name is Evelyn, I am 22 years old.
在 Python 中,類別通常由三個主要部分組成:
class Person:
def __init__(self, name, age): # 建構子
self.name = name # 屬性
self.age = age
def greet(self): # 方法
return f"Hello, I am {self.name}, {self.age} years old."
說明
在 Python 中,屬性 (attribute) 與方法 (method) 是類別的重要組成:
class Dog:
def __init__(self, name, breed):
self.name = name
self.breed = breed
def bark(self):
print(f"{self.name} says: Woof!")
dog1 = Dog("Mimi", "Samoyed")
dog2 = Dog("Autumn", "Schnauzer")
print(dog1.name) # Mimi
dog2.bark() # Autumn says: Woof!
補充說明
今天第一次接觸到 Python 的 OOP,開始理解「程式不只是程式碼,還是一種建模方式」。透過 class 與 object,能把「資料」和「功能」打包在一起,讓程式更貼近現實世界的思維。
以前寫 Java,因為有 class、public、private、建構子等繁瑣的語法,常常被卡住。今天決定再拿出來看一次!
在 Java,建立一個物件通常要寫更多結構:
public class Person {
String name;
int age;
// 建構子
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 方法
public void greet() {
System.out.println("Hello, my name is " + name + ", and I am " + age + " years old.");
}
}
public class Main {
public static void main(String[] args) {
Person p1 = new Person("Chloe", 20);
p1.greet();
}
}
Python 的 OOP 語法少了型別宣告與 public/private 關鍵字。
明天我要進一步學習物件導向進階:繼承(Inheritance)與多型(Polymorphism)。
這能讓我們建立「父類別」與「子類別」的關係,實現程式碼的重複利用與彈性,感覺會更貼近現實世界的物件層級結構!